package com.zenithmind.gateway.auth;

import com.zenithmind.common.security.JwtUtils;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * 默认用户信息解析器实现
 * 专门负责从JWT token中解析用户信息
 * 遵循单一职责原则：只负责用户信息的解析逻辑
 */
@Slf4j
@Component
public class DefaultUserInfoParser implements UserInfoParser {

    @Override
    public UserInfo parseUserInfo(String token) throws Exception {
        log.trace("开始解析用户信息");
        
        // 使用JwtUtils解析token并提取用户信息
        Map<String, Object> claims = JwtUtils.parseToken(token);
        log.debug("Token解析成功: {}", claims.keySet());

        // 提取用户ID
        String userId = JwtUtils.extractUserIdFromClaims(claims);
        
        // 提取用户角色
        String userRoles = JwtUtils.extractUserRolesFromClaims(claims);
        
        log.trace("用户信息解析完成，用户ID: {}, 角色: {}", userId, userRoles);
        
        return new UserInfo(userId, userRoles, claims);
    }
}
